<?php
/**
 ***********************************************************************************************************************
 * 缓存的predis驱动实现
 * 只实现redis 采用单例模式复用
 * 链式写法：cache::set(key, val)
 * 注：服务器使用twemproxy，部分redis方法不可用，参见：https://github.com/twitter/twemproxy/blob/master/notes/redis.md
 ***********************************************************************************************************************
 */
namespace artisan;

/**
 * Class cache
 * @package artisan
 */
class CachePredis extends CacheBase
{
    /**
     * 新版支持选择服务器 这里并不没有创建连接 采用的是延迟连接的方式 直到真正调用redis方法才会建立连接 减少连接浪费
     * @param string $alias
     * @return cache\PredisDriver
     */
    public static function connect($alias = '')
    {
        // 不选择服务器，使用默认服务器
        $alias = (empty($alias) || !is_string($alias) || is_numeric($alias)) ? 'base' : $alias;
        if(empty(self::$instances[$alias])) {
            self::$instances[$alias] = new \artisan\cache\PredisDriver(self::getServer($alias),$alias);//切换predis驱动
        }
        return self::$instances[$alias];
    }
}